package gdr.io;

import java.beans.XMLEncoder;
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;


/**
 * Contiene metodi per la gestione dell'io su file xml
 * @author Giorgio Vitale
 *
 */
public class XMLwriter<T> {
	private XMLEncoder encoder;
	
	public XMLwriter()
	{}
	/**
	 * Apre il flusso sul file. 
	 * @param filename
	 * @throws IllegalArgumentException se si verifica un errore
	 */
	public void open(String filename) throws IllegalArgumentException{
		try{ encoder = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(filename)));
		} catch (FileNotFoundException e) {
			System.err.println(e);
			throw new IllegalArgumentException();}
	}
	
	/**
	 * scrive l'input sul file. 
	 * @throws IllegalArgumentException se l'encoder non e' stato aperto.
	 */
	public void write(T o){
        if (encoder==null) throw new IllegalArgumentException();
        encoder.writeObject(o);
    }
	
	/**
	 * Chiude il flusso sul file.
	 */
		public void close()
	{	if (encoder!=null) encoder.close();
	}
}
